<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Persistence (computer science)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Persistence_(computer_science)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Persistence_computer_science rootpage-Persistence_computer_science skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Persistence (computer science)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">This article is about state outliving processes. For immutable data structures, see <a href="Persistent_data_structure" title="Persistent data structure">Persistent data structure</a>. For concepts relating to the persistence of memory, see <a href="The_Persistence_of_Memory_(disambiguation)" class="mw-disambig" title="The Persistence of Memory (disambiguation)">The Persistence of Memory (disambiguation)</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="Computer_science" title="Computer science">computer science</a>, <b>persistence</b> refers to the characteristic of <a href="State_(computer_science)" title="State (computer science)">state</a> of a system that outlives (persists for longer than) the <a href="Process_(computing)" title="Process (computing)">process</a> that created it. This is achieved in practice by storing the state as data in <a href="Computer_data_storage" title="Computer data storage">computer data storage</a>. Programs have to transfer data to and from storage devices and have to provide mappings from the native <a href="Programming_language" title="Programming language">programming-language</a> <a href="Data_structure" title="Data structure">data structures</a> to the storage device data structures.<sup id="cite_ref-Conf1983_1-0" class="reference"><a href="#cite_note-Conf1983-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Picture editing programs or <a href="Word_processor" title="Word processor">word processors</a>, for example, achieve <a href="State_(computer_science)" title="State (computer science)">state</a> persistence by saving their documents to <a href="Computer_file" title="Computer file">files</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Orthogonal_or_transparent_persistence">Orthogonal or transparent persistence</h2></div>
<p>Persistence is said to be "<a href="Orthogonality#Computer_science" title="Orthogonality">orthogonal</a>" or "transparent" when it is implemented as an intrinsic property of the execution environment of a program. An orthogonal persistence environment does not require any specific actions by programs running in it to retrieve or save their <a href="State_(computer_science)" title="State (computer science)">state</a>.
</p><p>Non-orthogonal persistence requires data to be written and read to and from storage using specific instructions in a program, resulting in the use of <i>persist</i> as a transitive verb: <i>On completion, the program persists the data</i>.
</p><p>The advantage of orthogonal persistence environments is simpler and less error-prone programs.
</p><p>The term "persistent" was first introduced by Atkinson and Morrison<sup id="cite_ref-Conf1983_1-1" class="reference"><a href="#cite_note-Conf1983-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> in the sense of orthogonal persistence: they used an adjective rather than a verb to emphasize persistence as a property of the data, as distinct from an imperative action performed by a program. The use of the transitive verb "persist" (describing an action performed by a program) is a back-formation.
</p>
<div class="mw-heading mw-heading3"><h3 id="Adoption">Adoption</h3></div>
<p>Orthogonal persistence is widely adopted in operating systems for <a href="Hibernation_(computing)" title="Hibernation (computing)">hibernation</a> and in <a href="Platform_virtualization" class="mw-redirect" title="Platform virtualization">platform virtualization</a> systems such as <a href="VMware" title="VMware">VMware</a> and <a href="VirtualBox" title="VirtualBox">VirtualBox</a> for state saving.
</p><p>Research prototype languages such as <a href="PS-algol" title="PS-algol">PS-algol</a>, <a href="Napier88" title="Napier88">Napier88</a>, Fibonacci and pJama, successfully demonstrated the concepts along with the advantages to programmers.
</p>
<div class="mw-heading mw-heading2"><h2 id="Persistence_techniques">Persistence techniques</h2></div>
<div class="mw-heading mw-heading3"><h3 id="System_images">System images</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="System_image" title="System image">System image</a></div>
<p>Using <a href="System_image" title="System image">system images</a> is the simplest persistence strategy. Notebook <a href="Hibernate_(OS_feature)" class="mw-redirect" title="Hibernate (OS feature)">hibernation</a> is an example of orthogonal persistence using a system image because it does not require any actions by the programs running on the machine. An example of non-orthogonal persistence using a system image is a simple text editing program executing specific instructions to save an entire document to a file.
</p><p><b>Shortcomings</b>: Requires enough RAM to hold the entire system state. State changes made to a system after its last image was saved are lost in the case of a system failure or shutdown. Saving an image for every single change would be too time-consuming for most systems, so images are not used as the single persistence technique for critical systems.
</p>
<div class="mw-heading mw-heading3"><h3 id="Journals">Journals</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Journal_(computing)" class="mw-redirect" title="Journal (computing)">Journal (computing)</a></div>
<p>Using journals is the second simplest persistence technique. Journaling is the process of storing events in a log before each one is applied to a system. Such logs are called journals.
</p><p>On startup, the journal is read and each event is reapplied to the system, avoiding data loss in the case of system failure or shutdown.
</p><p>The entire "Undo/Redo" history of user commands in a picture editing program, for example, when written to a file, constitutes a journal capable of recovering the state of an edited picture at any point in time.
</p><p>Journals are used by <a href="Journaling_file_system" title="Journaling file system">journaling file systems</a>, <a href="System_Prevalence" class="mw-redirect" title="System Prevalence">prevalent systems</a> and <a href="Database_management_system" class="mw-redirect" title="Database management system">database management systems</a> where they are also called "transaction logs" or "redo logs".
</p><p><b>Shortcomings</b>: When journals are used exclusively, the entire (potentially large) history of all system events must be reapplied on every system startup. As a result, journals are often combined with other persistence techniques.
</p>
<div class="mw-heading mw-heading3"><h3 id="Dirty_writes">Dirty writes</h3></div>
<p>This technique is the writing to storage of only those portions of system state that have been modified (are dirty) since their last write. Sophisticated document editing applications, for example, will use dirty writes to save only those portions of a document that were actually changed since the last save.
</p><p><b>Shortcomings:</b> This technique requires state changes to be intercepted within a program. This is achieved in a non-transparent way by requiring specific storage-API calls or in a transparent way with automatic <a href="Program_transformation" title="Program transformation">program transformation</a>. This results in code that is slower than native code and more complicated to debug.
</p>
<div class="mw-heading mw-heading2"><h2 id="Persistence_layers">Persistence layers</h2></div>
<p>Any <a href="Layer_(object-oriented_design)" title="Layer (object-oriented design)">software layer</a> that makes it easier for a program to persist its state is generically called a persistence layer. Most persistence layers will not achieve persistence directly but will use an underlying <a href="Database_management_system" class="mw-redirect" title="Database management system">database management system</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="System_prevalence">System prevalence</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="System_prevalence" title="System prevalence">System prevalence</a></div>
<p>System prevalence is a technique that combines system images and transaction journals, mentioned above, to overcome their limitations.
</p><p><b>Shortcomings:</b> A prevalent system must have enough <a href="Random-access_memory" title="Random-access memory">RAM</a> to hold the entire system state.
</p>
<div class="mw-heading mw-heading2"><h2 id="Database_management_systems_(DBMSs)">Database management systems (DBMSs)</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="DBMS" class="mw-redirect" title="DBMS">DBMS</a></div>
<p><a href="DBMS" class="mw-redirect" title="DBMS">DBMSs</a> use a combination of the dirty writes and transaction journaling techniques mentioned above. They provide not only persistence but also other services such as queries, auditing and access control.
</p>
<div class="mw-heading mw-heading2"><h2 id="Persistent_operating_systems">Persistent operating systems</h2></div>
<p>Persistent operating systems are <a href="Operating_system" title="Operating system">operating systems</a> that remain persistent even after a crash or unexpected shutdown. Operating systems that employ this ability include
</p>
<ul><li><a href="KeyKOS" title="KeyKOS">KeyKOS</a></li>
<li><a href="Extremely_Reliable_Operating_System" class="mw-redirect" title="Extremely Reliable Operating System">EROS</a>, the successor to KeyKOS</li>
<li>Coyotos, successor to EROS</li>
<li><a href="Multics" title="Multics">Multics</a> with its <a href="Single-level_store" title="Single-level store">single-level store</a></li>
<li><a href="Phantom_OS" title="Phantom OS">Phantom</a></li>
<li><a href="IBM_System/38" title="IBM System/38">IBM System/38</a></li>
<li><a href="IBM_i" title="IBM i">IBM i</a></li>
<li>Grasshopper OS <a rel="nofollow" class="external autonumber" href="https://web.archive.org/web/20150704211338/http://www-os.dcs.st-and.ac.uk/GH/">[1]</a></li>
<li>Lua OS</li>
<li>tahrpuppy-6.0.5</li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Persistent_data" title="Persistent data">Persistent data</a></li>
<li><a href="Persistent_data_structure" title="Persistent data structure">Persistent data structure</a></li>
<li><a href="Persistent_identifier" title="Persistent identifier">Persistent identifier</a></li>
<li><a href="Persistent_memory" title="Persistent memory">Persistent memory</a></li>
<li><a href="Copy-on-write" title="Copy-on-write">Copy-on-write</a></li>
<li><a href="Create%2C_read%2C_update_and_delete" title="Create, read, update and delete">CRUD</a></li>
<li><a href="Java_Data_Objects" title="Java Data Objects">Java Data Objects</a></li>
<li><a href="Java_Persistence_API" class="mw-redirect" title="Java Persistence API">Java Persistence API</a></li>
<li><a href="System_prevalence" title="System prevalence">System prevalence</a></li>
<li><a href="Orthogonality#Computer_science" title="Orthogonality">Orthogonality</a></li>
<li><a href="Service_Data_Object" class="mw-redirect" title="Service Data Object">Service Data Object</a></li>
<li><a href="Snapshot_(computer_storage)" title="Snapshot (computer storage)">Snapshot (computer storage)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-Conf1983-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-Conf1983_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Conf1983_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFAtkinsonBaileyChisholmCockshott1983" class="citation conference cs1"><a href="Ron_Morrison" title="Ron Morrison">Atkinson, M.P.</a>; Bailey, P.J.; Chisholm, K.J.; <a href="Paul_Cockshott" title="Paul Cockshott">Cockshott, W.P.</a>; Morrison, R. (1983). <a rel="nofollow" class="external text" href="http://archive.cs.st-andrews.ac.uk/papers/download/ABC+83b.pdf">"PS-algol: A Language for Persistent Programming"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings 10th Australian National Computer Conference</i>. 10th Australian National Computer Conference. Melbourne, Australia. pp. <span class="nowrap">70–</span>79.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFBalzer2005" class="citation web cs1">Balzer, Stephanie (November 17, 2005). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20061231214555/http://people.inf.ethz.ch/balzers/publications/contracted_persistent_object_programming.pdf">"Contracted Persistent Object Programming"</a> <span class="cs1-format">(PDF)</span>. <i>University of Glasgow - School of CS - Research</i>. ETH Zürich. Archived from <a rel="nofollow" class="external text" href="http://people.inf.ethz.ch/balzers/publications/contracted_persistent_object_programming.pdf">the original</a> <span class="cs1-format">(PDF)</span> on December 31, 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">September 21,</span> 2015</span>.</cite></span>
</li>
</ol></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox391" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4247899-6">Germany</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2024-12-08" href="https://en.wikipedia.org/wiki/?title=Persistence_(computer_science)&oldid=1261929201">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>